package cn.com.css.taxInspection.gt3.service.impl;


import cn.com.css.taxInspection.gt3.entity.*;
import cn.com.css.taxInspection.gt3.mapper.JcAjtzZcajxxMapper;
import cn.com.css.taxInspection.gt3.service.*;
import cn.com.css.taxInspection.system.service.impl.HttpSessionService;
import cn.com.css.taxInspection.util.TsBqUtils;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;

@Service
public class JcAjtzZcajxxServiceImpl extends ServiceImpl<JcAjtzZcajxxMapper, JcAjtzZcajxxEntity> implements JcAjtzZcajxxService {
    @Resource
    private HttpSessionService httpSessionService;

    @Override
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public IPage<JcAjtzZcajxxEntity> queryZcayxx(JcAjtzZcajxxEntity jcAjtzZcajxxEntity) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String currentDeptId = httpSessionService.getCurrentDeptId();
        Page page = new Page(jcAjtzZcajxxEntity.getPage(), jcAjtzZcajxxEntity.getLimit());
        LambdaQueryWrapper<JcAjtzZcajxxEntity> queryWrapper = Wrappers.lambdaQuery();
        //案源编号
        if (TsBqUtils.isNotNull(jcAjtzZcajxxEntity.getJcaybh())) {
            queryWrapper.like(JcAjtzZcajxxEntity::getJcaybh, jcAjtzZcajxxEntity.getJcaybh());
        }
        //纳税人识别号
        if (TsBqUtils.isNotNull(jcAjtzZcajxxEntity.getNsrsbh())) {
            queryWrapper.like(JcAjtzZcajxxEntity::getNsrsbh, jcAjtzZcajxxEntity.getNsrsbh());
        }
        //纳税人名称
        if (TsBqUtils.isNotNull(jcAjtzZcajxxEntity.getNsrmc())) {
            queryWrapper.like(JcAjtzZcajxxEntity::getNsrmc, jcAjtzZcajxxEntity.getNsrmc());
        }
        //案件状态代码
        if (TsBqUtils.isNotNull(jcAjtzZcajxxEntity.getSwjcayztDm())) {
            queryWrapper.like(JcAjtzZcajxxEntity::getSwjcayztDm, jcAjtzZcajxxEntity.getSwjcayztDm());
        }
        //立案时间
        if (TsBqUtils.isNotNull(jcAjtzZcajxxEntity.getLasjq())) {
            queryWrapper.between(JcAjtzZcajxxEntity::getLrrq, sdf.parse(jcAjtzZcajxxEntity.getLasjq()), sdf.parse(jcAjtzZcajxxEntity.getLasjz()));
        }
        //检查人员类型
        if (TsBqUtils.isNotNull(jcAjtzZcajxxEntity.getZcrylx())) {
            queryWrapper.eq(JcAjtzZcajxxEntity::getZcrylx, jcAjtzZcajxxEntity.getZcrylx());
        }
        //检查案件类型
        if (TsBqUtils.isNotNull(jcAjtzZcajxxEntity.getZcajlx())) {
            queryWrapper.eq(JcAjtzZcajxxEntity::getZcajlx, jcAjtzZcajxxEntity.getZcajlx());
        }
        queryWrapper.like(JcAjtzZcajxxEntity::getAydjjgDm, currentDeptId.substring(0, 9));
        queryWrapper.orderByDesc(JcAjtzZcajxxEntity::getJcaybh);
        queryWrapper.orderByDesc(JcAjtzZcajxxEntity::getLrrq);
        return this.page(page, queryWrapper);
    }

    @Override
    public List<JcAjtzZcajxxEntity> exportZcayxx(JcAjtzZcajxxEntity jcAjtzZcajxxEntity) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        LambdaQueryWrapper<JcAjtzZcajxxEntity> queryWrapper = Wrappers.lambdaQuery();
        //案源编号
        if (TsBqUtils.isNotNull(jcAjtzZcajxxEntity.getJcaybh())) {
            queryWrapper.like(JcAjtzZcajxxEntity::getJcaybh, jcAjtzZcajxxEntity.getJcaybh());
        }
        //纳税人识别号
        if (TsBqUtils.isNotNull(jcAjtzZcajxxEntity.getNsrsbh())) {
            queryWrapper.like(JcAjtzZcajxxEntity::getNsrsbh, jcAjtzZcajxxEntity.getNsrsbh());
        }
        //纳税人名称
        if (TsBqUtils.isNotNull(jcAjtzZcajxxEntity.getNsrmc())) {
            queryWrapper.like(JcAjtzZcajxxEntity::getNsrmc, jcAjtzZcajxxEntity.getNsrmc());
        }
        //案件状态代码
        if (TsBqUtils.isNotNull(jcAjtzZcajxxEntity.getSwjcayztDm())) {
            queryWrapper.like(JcAjtzZcajxxEntity::getSwjcayztDm, jcAjtzZcajxxEntity.getSwjcayztDm());
        }
        //立案时间
        if (TsBqUtils.isNotNull(jcAjtzZcajxxEntity.getLasjq())) {
            queryWrapper.between(JcAjtzZcajxxEntity::getLrrq, sdf.parse(jcAjtzZcajxxEntity.getLasjq()), sdf.parse(jcAjtzZcajxxEntity.getLasjz()));
        }
        //检查人员类型
        if (TsBqUtils.isNotNull(jcAjtzZcajxxEntity.getZcrylx())) {
            queryWrapper.eq(JcAjtzZcajxxEntity::getZcrylx, jcAjtzZcajxxEntity.getZcrylx());
        }
        //检查案件类型
        if (TsBqUtils.isNotNull(jcAjtzZcajxxEntity.getZcajlx())) {
            queryWrapper.eq(JcAjtzZcajxxEntity::getZcajlx, jcAjtzZcajxxEntity.getZcajlx());
        }
        String currentDeptId = httpSessionService.getCurrentDeptId();
        queryWrapper.like(JcAjtzZcajxxEntity::getAydjjgDm, currentDeptId.substring(0, 9));
        queryWrapper.orderByDesc(JcAjtzZcajxxEntity::getJcaybh);
        queryWrapper.orderByDesc(JcAjtzZcajxxEntity::getLrrq);
        return this.list(queryWrapper);
    }
}
